package com.coordinate;


/**
 * Created by sh04799 on 2017/10/27.
 */

public class LonLatUtils {
    private LonLatUtils() {

    }

//    NTU经度 = 116.33533 * 100000 = 11633533（NTU） 8
//    NTU纬度 = 39.20567 * 100000 = 3920567（NTU）7
//    比如: 点A的纬度为3995400，点B的纬度为3995300，则这两个点在沿着纬线的方向相差100米。
//    点A的经度为11695400，点B的经度为11695300，则这两个点在沿着经线的方向相差大约为77米,

    /**
     * 方向
     *
     * @param dx 距离 m
     *           *100000 得到 NTU
     * @return
     */
    public static long metreToLat(int dx) {
        // 1米 对应 360 *100000/2 *PI *R;
        return (long) ((360 * 100000.0 / C) * dx);
    }

    private static final int R = 6371000;// 半徑
    private static final int C = 40030173;//周長

    /**
     * 东西方向
     *
     * @param dy 距离 m
     * @return 该点对于的纬度坐标
     */
    public static long metreToLon(int dy, int latE5) {
        // 1米 对应 360 *100000/2 *PI *R*coslat;
        double dd = 40030173 * Math.cos(Math.PI / 180 * latE5 / 100000);
        double d = 360 * 100000 / dd * dy;
        return (long) d;
    }


}
